Ubuntu 16.04
Sponsored Link

OpenStack Pike : Configure Swift#3 (Storage Node)
2017/09/20
 
Configure OpenStack Object Storage (Swift).
This example is based on the emvironment like follows.
-+---------------+----------------------------+------------
 |               |                            |
 |           eth0|10.0.0.30               eth0|10.0.0.50
 |   +-----------+-----------+    +-----------+-----------+
 |   |    [ Control Node ]   |    |    [  Proxy Node  ]   |
 |   |                       |    |                       |
 |   |  MariaDB    RabbitMQ  |    |      Swift Proxy      |
 |   |  Memcached  httpd     |    |                       |
 |   |  Keystone             |    |                       |
 |   +-----------------------+    +-----------------------+
 |
 +---------------+----------------------------+----------------------------+-----------
             eth0|10.0.0.71               eth0|10.0.0.72               eth0|10.0.0.73
     +-----------+-----------+    +-----------+-----------+    +-----------+-----------+
     |   [ Storage Node#1 ]  |    |   [ Storage Node#2 ]  |    |   [ Storage Node#3 ]  |
     |                       |    |                       |    |                       |
     |     Swift-Account     |    |     Swift-Account     |    |     Swift-Account     |
     |    Swift-Container    |    |    Swift-Container    |    |    Swift-Container    |
     |     Swift-Object      |    |     Swift-Object      |    |     Swift-Object      |
     +-----------------------+    +-----------------------+    +-----------------------+

 
Configure Storage Node on this section.
It's OK to set the same settings mostly on all Storage Nodes, but only IP address and Device number are different each other, though. Furthermore, add Hard drives on each Storage Nodes and create a partition [/dev/sdb1] for this settings.
[1] Install Swift-Account, Swift-Container, Swift-Object and others on all Storage Node like follows.
root@snode01:~#
apt-get -y install swift swift-account swift-container swift-object xfsprogs
[2] Format free space of disk (/dev/sdb1 on this example) with XFS and mount on srv/node on all Storage Node like follows.
(the number [device*] is different on each Storage Nodes)
root@snode01:~#
mkfs.xfs -i size=1024 -s size=4096 /dev/sdb1

meta-data=/dev/sdb1              isize=1024   agcount=4, agsize=1310656 blks
         =                       sectsz=4096  attr=2, projid32bit=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

root@snode01:~#
mkdir -p /srv/node/device0

root@snode01:~#
mount -o noatime,nodiratime,nobarrier /dev/sdb1 /srv/node/device0

root@snode01:~#
chown -R swift. /srv/node

root@snode01:~#
vi /etc/fstab
# add to the end

/dev/sdb1               /srv/node/device0       xfs     noatime,nodiratime,nobarrier 0 0
[3] Copy Swift Ring files from the Swift Proxy Node to all Storage Nodes.
root@proxy:~#
scp /etc/swift/*.gz 10.0.0.71:/etc/swift/

root@10.0.0.71's password:
account.ring.gz                    100% 3912     3.8KB/s   00:00
container.ring.gz                  100% 3904     3.8KB/s   00:00
object.ring.gz                     100% 3895     3.8KB/s   00:00
[4] Configure Swift and Rsync on all Storage Nodes.
root@snode01:~#
chown swift. /etc/swift/*.gz

root@snode01:~#
vi /etc/swift/swift.conf
# set the value which is set on Proxy Node

[swift-hash]
swift_hash_path_suffix = swift_shared_path
swift_hash_path_prefix = swift_shared_path
root@snode01:~#
vi /etc/swift/account-server.conf
# line 6: make sure the vakue is follows

bind_ip = 0.0.0.0
bind_port = 6002
root@snode01:~#
vi /etc/swift/container-server.conf
# line 6: make sure the vakue is follows

bind_ip = 0.0.0.0
bind_port = 6001
root@snode01:~#
vi /etc/swift/object-server.conf
# line 6: make sure the vakue is follows

bind_ip = 0.0.0.0
bind_port = 6000
root@snode01:~#
vi /etc/rsyncd.conf
# create new

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
address = 10.0.0.71

[account]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/account.lock

[container]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/container.lock

[object]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/object.lock

[swift_server]
path            = /etc/swift
read only       = true
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 5
lock file =     /var/lock/swift_server.lock

root@snode01:~#
vi /etc/default/rsync
# line 8: change

RSYNC_ENABLE=
true
[5] Start Swift services.
root@snode01:~#
systemctl start rsync

root@snode01:~#
systemctl enable rsync

root@snode01:~#
for ringtype in account container object; do
    systemctl start swift-$ringtype
    systemctl enable swift-$ringtype
    for service in replicator updater auditor; do
        if [ $ringtype != 'account' ] || [ $service != 'updater' ]; then
            systemctl start swift-$ringtype-$service
            systemctl enable swift-$ringtype-$service
        fi
    done
done 
swift-account start/running
swift-account-replicator start/running
swift-account-auditor start/running
swift-container start/running
swift-container-replicator start/running
swift-container-updater start/running
swift-container-auditor start/running
swift-object start/running
swift-object-replicator start/running
swift-object-updater start/running
swift-object-auditor start/running
 
Tweet